The next 700 compiler correctness theorems (functional pearl)
نویسندگان
چکیده
منابع مشابه
The next 700 Krivine machines
The Krivine machine is a simple and natural implementation of the normal weak-head reduction strategy for pure λ-terms. While its original description has remained unpublished, this machine has served as a basis for many variants, extensions and theoretical studies. In this paper, we present the Krivine machine and some well-known variants in a common framework. Our framework consists of a hier...
متن کاملThe next 700 slicing criteria
A slice is constructed by deleting statements from a program whilst preserving some projection of its semantics. Since Mark Weiser introduced program slicing in 1979, a wide variety of slicing paradigms have been proposed, each of which is based upon a new formulation of the slicing criterion, capturing the semantic projection to be preserved during the process of command deletion. This paper s...
متن کاملThe next 700 reflective object-oriented languages
Since Smith seminal work, there have been numerous reflective language definition and implementation proposals. These proposals, initially restricted to functional languages, have been quickly extended to object-oriented languages. Unfortunately, reflective objectoriented language definitions remained mostly ad hoc. In this paper, we present a generic reification technique which enables the sel...
متن کاملCompiler Support for Correctness Proofs
The development of correct software is an important task which should not be carried out with the help of tools following diierent approaches. We propose that full support for correctness proofs should be integrated into the compiler. We outline in this paper how a compiler for a functional language can be extended to support the development of correct software. Speciications, functional progra...
متن کاملType Refinements for Compiler Correctness
Type refinements, introduced by Freeman and Pfenning and explored by Davies and Dunfield, unify the ontological and epistemic views of typing. Types tell us what programming language constructs exist, whereas refinements express properties of the values of a type. Here we show that refinements are very useful in compiler correctness proofs, wherein it often arises that two expressions that are ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
ژورنال
عنوان ژورنال: Proceedings of the ACM on Programming Languages
سال: 2019
ISSN: 2475-1421
DOI: 10.1145/3341689